package sketch.generator;

import java.util.List;

public abstract class ValueGenerator<T> extends Generator<T> {
	/**
	 * Ways to compose a complex data structure
	 * */
	public abstract T composeData();
	
	List<T> currentWrappedValue = null;
	
	public abstract List<T> nextWrappedValue();
	
	public boolean hasNextListValue() {
		return hasNext();
	}
	
	public List<T> nextListValue() {
		currentWrappedValue = nextWrappedValue();
		super.step ++;
		super.isReset = false;
		return currentWrappedValue;
	}
	
	public List<T> currentListValue() {
		return currentWrappedValue;
	}
	
	@Override
	public void reset() {
		super.reset();
		currentWrappedValue = null;
	}
}